package ai.leinao.notify.core.provider;

import ai.leinao.notify.core.Notifier;
import ai.leinao.notify.core.NotifyProperties;
import ai.leinao.notify.core.enums.NotifyType;
import ai.leinao.notify.core.template.Template;

/**
 * 通知服务供应商
 *
 * @author zhong.wang
 * @date 2025/7/7
 */
public interface NotifierProvider {

    /**
     * 获取通知类型
     *
     * @return 通知类型
     */
    NotifyType getNotifyType();

    /**
     * 获取供应商名称
     *
     * @return
     */
    String getProvider();

    /**
     * 根据通知配置创建通知器
     *
     * @return 通知器
     * @param <N>
     */
    <N extends Notifier<? extends Template>> N createNotifier(NotifyProperties properties);
}
